package xyz.cerberu.cet.anime.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import xyz.cerberu.cet.anime.domain.Anime;

import java.sql.Date;
import java.util.List;

@Mapper
public interface AnimeDao {
    /**
     * 获取一个时间段的动漫，进行物理分页
     * @author β世界 on 22:18 2021/5/31
     * @param year: 年份
     * @param quarter: 季度
     * @param week: 周期
     * @param startLine: 开始页
     * @param showNumber: 结束页
     * @return java.util.List<xyz.cerberu.cet.anime.domain.Anime>
     **/
    List<Anime> selectAnime(@Param("year") int year, @Param("quarter") String quarter, @Param("week") int week, @Param("startLine") int startLine, @Param("showNumber") int showNumber);

    /**
     * 根据动漫id查询动漫
     * @author β世界 on 22:09 2021/5/31
     * @param ani_id: 动漫的id
     * @return xyz.cerberu.cet.anime.domain.Anime
     **/
    Anime selectAnimeByID(@Param("ani_id")String ani_id);

    /**
     * 获取指定年中的某个季度中的某周的动漫
     * @author β世界 on 22:08 2021/5/31
     * @param year: 年份
     * @param quarter: 季度
     * @param week: 周
     * @return java.util.List<xyz.cerberu.cet.anime.domain.Anime>
     **/
    List<Anime> selectAnimeByDate(@Param("year") int year,@Param("quarter") String quarter,@Param("week") int week);

    /**
     * 获取一定时间区间的指定周的动漫,当省略week等于0的时候，就是获取到所有的动漫
     * @author β世界 on 22:08 2021/5/31
     * @param start: 开始时间
     * @param end: 结束时间
     * @param week: 周期
     * @return java.util.List<xyz.cerberu.cet.anime.domain.Anime>
     **/
    List<Anime> selectRangeAnimeByWeek(@Param("start")Date start,@Param("end")Date end,@Param("week") int week);

    /**
     * 获取一定时间区间的指定周的动漫的数量
     * @author β世界 on 22:11 2021/5/31
     * @param year: 年份
     * @param quarter: 季度
     * @param week: 周期
     * @return int
     **/
    int selectSumAnime(@Param("year") int year,@Param("quarter") String quarter,@Param("week") int week);

    /**
     * 获取所有的年份
     * @author β世界 on 22:39 2021/5/31
     * @return java.lang.String[]
     **/
    String[] selectYear();

    /**
     * 插入一个动漫条目
     * @author β世界 on 22:39 2021/5/31
     * @param anime: 动漫实体
     * @return void
     **/
    void insertAnime(@Param("anime") Anime anime);

    /**
     * 更新一个动漫实体
     * @author β世界 on 22:39 2021/5/31
     * @param anime: 动漫实体
     * @return int
     **/
    int updateAnime(@Param("anime") Anime anime);

    /**
     * 根据动漫id删除一个动漫条目
     * @author β世界 on 22:39 2021/5/31
     * @param ani_id: 动漫的id
     * @return boolean
     **/
    boolean deleteAnime(@Param("ani_id") String ani_id);


}
